home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / applet / AppletSecurity.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  3.9 KB  |  160 lines

  1. package sun.applet;
  2.  
  3. import java.lang.Thread.State;
  4. import java.lang.reflect.Field;
  5. import java.net.URLClassLoader;
  6. import java.security.AccessControlContext;
  7. import java.security.AccessController;
  8. import java.util.HashSet;
  9. import sun.awt.AWTSecurityManager;
  10. import sun.awt.AppContext;
  11. import sun.security.util.SecurityConstants;
  12.  
  13. public class AppletSecurity extends AWTSecurityManager {
  14.    private AppContext mainAppContext;
  15.    private static Field facc = null;
  16.    private static Field fcontext = null;
  17.    private HashSet restrictedPackages = new HashSet();
  18.    private boolean inThreadGroupCheck = false;
  19.  
  20.    public AppletSecurity() {
  21.       this.reset();
  22.       this.mainAppContext = AppContext.getAppContext();
  23.    }
  24.  
  25.    public void reset() {
  26.       this.restrictedPackages.clear();
  27.       AccessController.doPrivileged(new 1(this));
  28.    }
  29.  
  30.    private AppletClassLoader currentAppletClassLoader() {
  31.       ClassLoader var1 = this.currentClassLoader();
  32.       if (var1 != null && !(var1 instanceof AppletClassLoader)) {
  33.          Class[] var2 = this.getClassContext();
  34.  
  35.          for(int var3 = 0; var3 < var2.length; ++var3) {
  36.             var1 = var2[var3].getClassLoader();
  37.             if (var1 instanceof AppletClassLoader) {
  38.                return (AppletClassLoader)var1;
  39.             }
  40.          }
  41.  
  42.          for(int var8 = 0; var8 < var2.length; ++var8) {
  43.             ClassLoader var4 = var2[var8].getClassLoader();
  44.             if (var4 instanceof URLClassLoader) {
  45.                var1 = (ClassLoader)AccessController.doPrivileged(new 2(this, var4));
  46.                if (var1 != null) {
  47.                   return (AppletClassLoader)var1;
  48.                }
  49.             }
  50.          }
  51.  
  52.          var1 = Thread.currentThread().getContextClassLoader();
  53.          if (var1 instanceof AppletClassLoader) {
  54.             return (AppletClassLoader)var1;
  55.          } else {
  56.             return (AppletClassLoader)null;
  57.          }
  58.       } else {
  59.          return (AppletClassLoader)var1;
  60.       }
  61.    }
  62.  
  63.    protected boolean inThreadGroup(ThreadGroup var1) {
  64.       return this.currentAppletClassLoader() == null ? false : this.getThreadGroup().parentOf(var1);
  65.    }
  66.  
  67.    protected boolean inThreadGroup(Thread var1) {
  68.       return this.inThreadGroup(var1.getThreadGroup());
  69.    }
  70.  
  71.    public void checkAccess(Thread var1) {
  72.       if (var1.getState() != State.TERMINATED && !this.inThreadGroup(var1)) {
  73.          this.checkPermission(SecurityConstants.MODIFY_THREAD_PERMISSION);
  74.       }
  75.  
  76.    }
  77.  
  78.    public synchronized void checkAccess(ThreadGroup var1) {
  79.       if (this.inThreadGroupCheck) {
  80.          this.checkPermission(SecurityConstants.MODIFY_THREADGROUP_PERMISSION);
  81.       } else {
  82.          try {
  83.             this.inThreadGroupCheck = true;
  84.             if (!this.inThreadGroup(var1)) {
  85.                this.checkPermission(SecurityConstants.MODIFY_THREADGROUP_PERMISSION);
  86.             }
  87.          } finally {
  88.             this.inThreadGroupCheck = false;
  89.          }
  90.       }
  91.  
  92.    }
  93.  
  94.    public void checkPackageAccess(String var1) {
  95.       super.checkPackageAccess(var1);
  96.  
  97.       for(String var3 : this.restrictedPackages) {
  98.          if (var1.equals(var3) || var1.startsWith(var3 + ".")) {
  99.             this.checkPermission(new RuntimePermission("accessClassInPackage." + var1));
  100.          }
  101.       }
  102.  
  103.    }
  104.  
  105.    public void checkAwtEventQueueAccess() {
  106.       AppContext var1 = AppContext.getAppContext();
  107.       AppletClassLoader var2 = this.currentAppletClassLoader();
  108.       if (var1 == this.mainAppContext && var2 != null) {
  109.          super.checkAwtEventQueueAccess();
  110.       }
  111.  
  112.    }
  113.  
  114.    public ThreadGroup getThreadGroup() {
  115.       AppletClassLoader var1 = this.currentAppletClassLoader();
  116.       ThreadGroup var2 = var1 == null ? null : var1.getThreadGroup();
  117.       return var2 != null ? var2 : super.getThreadGroup();
  118.    }
  119.  
  120.    public AppContext getAppContext() {
  121.       AppletClassLoader var1 = this.currentAppletClassLoader();
  122.       if (var1 == null) {
  123.          return null;
  124.       } else {
  125.          AppContext var2 = var1.getAppContext();
  126.          if (var2 == null) {
  127.             throw new SecurityException("Applet classloader has invalid AppContext");
  128.          } else {
  129.             return var2;
  130.          }
  131.       }
  132.    }
  133.  
  134.    // $FF: synthetic method
  135.    static HashSet access$000(AppletSecurity var0) {
  136.       return var0.restrictedPackages;
  137.    }
  138.  
  139.    // $FF: synthetic method
  140.    static Field access$100() {
  141.       return facc;
  142.    }
  143.  
  144.    // $FF: synthetic method
  145.    static Field access$200() {
  146.       return fcontext;
  147.    }
  148.  
  149.    static {
  150.       try {
  151.          facc = URLClassLoader.class.getDeclaredField("acc");
  152.          facc.setAccessible(true);
  153.          fcontext = AccessControlContext.class.getDeclaredField("context");
  154.          fcontext.setAccessible(true);
  155.       } catch (NoSuchFieldException var1) {
  156.          throw new UnsupportedOperationException(var1);
  157.       }
  158.    }
  159. }
  160.